import torch
import torch.nn as nn

innerChannels = 32


class Model(nn.Module):
    def __init__(self):
        super(Model, self).__init__()
        self.model = nn.Sequential(
            nn.ConvTranspose2d(
                in_channels=100, out_channels=innerChannels*16, kernel_size=(12, 4)),
            nn.ConvTranspose2d(in_channels=innerChannels*16, out_channels=innerChannels*8, kernel_size=(
                4, 4), stride=(2, 2), padding=(1, 1)),
            nn.ConvTranspose2d(in_channels=innerChannels*8, out_channels=innerChannels*4, kernel_size=(
                4, 4), stride=(2, 2), padding=(1, 1)),
            nn.ConvTranspose2d(in_channels=innerChannels*4, out_channels=innerChannels*2, kernel_size=(
                4, 4), stride=(2, 2), padding=(1, 1)),
            nn.ConvTranspose2d(in_channels=innerChannels*2, out_channels=innerChannels, kernel_size=(
                4, 4), stride=(2, 2), padding=(1, 1)),
            nn.ConvTranspose2d(in_channels=innerChannels, out_channels=3, kernel_size=(
                4, 4), stride=(2, 2), padding=(1, 1)),
        )

    def forward(self, x):
        y = self.model(x)
        return y


x = torch.ones((1, 100, 1, 1), dtype=torch.float32)
model = Model()
y = model(x)
print(y.shape)
